/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Scenery;

import Animation.Animations.Attack;
import Animation.BaseSpriteAnimation;
import Animation.Animations.ChestBounce;
import Animation.Animations.ChestTurn;
import Animation.Animations.FootRashin;
import Animation.Animations.FootSteps;
import Animation.Animations.HandBangle;
import Animation.Animations.HeadBob;
import Animation.Animations.PickUp;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;

/*
 * 
 * @author: Ziden
 * 
 */

public class BaseSprite {

    protected Node masterNode = new Node("CharaMasterNode");
    
    public BaseSprite() {
    } 
    
    protected BaseSpriteAnimation animation = new BaseSpriteAnimation(this);
    // Model nodes
    protected Node model = new Node(); // everything
    protected Node bodyNode = new Node("CharaBody"); // only body
    protected Node masterBodyNode = new Node();
    protected Node legNode = new Node("LegNode"); // only legs
    protected Node headNode = new Node("HeadNode"); // only head
    protected Node rHandNode = new Node("rHand");
    protected Node lHandNode = new Node("lHand");
    Geometry rfoot;
    Geometry lfoot;
    Geometry rhand;
    Geometry lhand;
    Geometry head; 
    Geometry body;
    protected float bodyAngle = 0f;
    protected float footAngle = 0f;
    protected float headAngle = 0f;
    
    public void loadAnimations(BaseCharacter chara) {
        animation.addAnimation(new FootSteps(chara,20));
        animation.addAnimation(new FootRashin(chara,20));
        animation.addAnimation(new ChestBounce(chara));
        animation.addAnimation(new HeadBob(chara,2));
        animation.addAnimation(new HandBangle(chara,2));
        animation.addAnimation(new ChestTurn(chara));
        animation.addAnimation(new PickUp(chara, 40));
        animation.addAnimation(new Attack(chara));
    }
    
    public Node getMasterNode() {
        return masterNode;
    }

    public Node getModel() {
        return model;
    }

    public BaseSpriteAnimation getAnimation() {
        return animation;
    }

    public Geometry getBody() {
        return body;
    }

    public float getBodyAngle() {
        return bodyAngle;
    }

    public Node getBodyNode() {
        return bodyNode;
    }

    public Geometry getHead() {
        return head;
    }

    public Node getHeadNode() {
        return headNode;
    }

    public Node getLegNode() {
        return legNode;
    }

    public Geometry getLfoot() {
        return lfoot;
    }

    public Geometry getLhand() {
        return lhand;
    }

    public Geometry getRfoot() {
        return rfoot;
    }

    public Geometry getRhand() {
        return rhand;
    }

    public void setBody(Geometry body) {
        this.body = body;
    }

    public void setHead(Geometry head) {
        this.head = head;
    }

    public void setLfoot(Geometry lfoot) {
        this.lfoot = lfoot;
    }

    public void setLhand(Geometry lhand) {
        this.lhand = lhand;
    }

    public void setMasterNode(Node masterNode) {
        this.masterNode = masterNode;
    }

    public void setModel(Node model) {
        this.model = model;
    }

    public void setRfoot(Geometry rfoot) {
        this.rfoot = rfoot;
    }

    public void setRhand(Geometry rhand) {
        this.rhand = rhand;
    }

    public Node getMasterBodyNode() {
        return masterBodyNode;
    }

    public float getFootAngle() {
        return footAngle;
    }

    public void setFootAngle(float footAngle) {
        this.footAngle = footAngle;
    }

    public float getHeadAngle() {
        return headAngle;
    }

    public void setHeadAngle(float headAngle) {
        this.headAngle = headAngle;
    }

    public Node getlHandNode() {
        return lHandNode;
    }

    public void setlHandNode(Node lHandNode) {
        this.lHandNode = lHandNode;
    }

    public Node getrHandNode() {
        return rHandNode;
    }

    public void setrHandNode(Node rHandNode) {
        this.rHandNode = rHandNode;
    }
    
    
}

